package cn.tannn.cat.file.sdk.bean;

import cn.tannn.cat.file.sdk.config.Aws3Config;
import cn.tannn.cat.file.sdk.config.LocalConfig;
import cn.tannn.cat.file.sdk.config.MinioConfig;
import cn.tannn.cat.file.sdk.config.QiNiuConfig;
import cn.tannn.cat.file.sdk.enums.StorageDict;
import cn.tannn.cat.file.sdk.enums.StorageMaster;
import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;


/**
 * 文件存储器
 * <p> 存储器元数据 - 用于连接
 * @author <a href="https://tannn.cn/">tan</a>
 * @date 2024/3/7 11:05
 */
@Getter
@Setter
@ToString
public class FileStorage{

    /**
     * 存储器
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;

    /**
     * 存储器名
     */
    private String name;

    /**
     * 存储器字典值[Dict.value]
     */
    private String storage;

    /**
     * 是否为主配置
     * @see StorageMaster
     */
    private StorageMaster master;

    /**
     * 存储配置Json
     * @see Aws3Config
     * @see LocalConfig
     * @see MinioConfig
     * @see QiNiuConfig
     */
    private JSONObject config;


    /**
     * 备注
     */
    private String remark;



    /**
     * 当前配置是local的
     */
    public boolean localConfig(){
        return storage.equals(StorageDict.LOCAL_STORAGE.getValue());
    }



    /**
     * 当前配置是minio的
     */
    public boolean minioConfig(){
        return storage.equals(StorageDict.MINIO_STORAGE.getValue());
    }


    /**
     * 当前配置是七牛的
     */
    public boolean qiNiuConfig(){
        return storage.equals(StorageDict.QINIU_STORAGE.getValue());
    }

    /**
     * 当前配置是ftp的
     */
    public boolean ftpConfig(){
        return storage.equals(StorageDict.FTP_STORAGE.getValue());
    }

    /**
     * 当前配置是阿里云的
     */
    public boolean aliyunConfig(){
        return storage.equals(StorageDict.ALI_STORAGE.getValue());
    }

    /**
     * 当前配置是亚马逊s3的
     */
    public boolean s3Config(){
        return storage.equals(StorageDict.S3_STORAGE.getValue());
    }

}
